package com.twb.auth.service;

import java.util.List;
import java.util.Set;

import com.twb.auth.entity.twbRole.TwbRole;
import com.twb.auth.entity.twbRole.dto.GetTwbRoleByIdDto;
import com.twb.auth.entity.twbRole.dto.SearchTwbRoleDto;
import com.twb.auth.entity.twbRole.vo.SaveTwbRoleVo;
import com.twb.auth.entity.twbRole.vo.SearchTwbRoleVo;
import com.twb.core.base.service.IBaseService;

/**
 * @ClassName ITwbRoleService
 * @Description 角色service
 * @author DSY
 * @date 2018年11月6日 下午4:23:26
 */
public interface ITwbRoleService extends IBaseService<TwbRole> {

	/**
	 * @Title  listRoleByUserId
	 * @Description 根据用户ID获取用户角色信息
	 * @param userId
	 * @return
	 * @author DSY
	 * @date 2018年11月6日 下午4:26:39
	 */
	Set<TwbRole> listRoleByUserId(String userId);

	/**
	 * @Title  getTwbRoleById
	 * @Description 根据ID获取角色详情
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2018年11月15日 下午12:11:05
	 */
	GetTwbRoleByIdDto getTwbRoleById(String id);

	/**
	 * @Title  searchTwbRole
	 * @Description 分页查询角色
	 * @param vo
	 * @param pageVo
	 * @return
	 * @author DSY
	 * @date 2018年11月15日 上午10:11:39
	 */
	List<SearchTwbRoleDto> searchTwbRole(SearchTwbRoleVo vo);

	/**
	 * @Title  saveTwbRole
	 * @Description 保存角色
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2018年11月15日 上午11:00:40
	 */
	boolean saveTwbRole(SaveTwbRoleVo vo);

	/**
	 * @Title  deleteTwbRoleById
	 * @Description 删除角色
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2018年11月15日 下午12:22:04
	 */
	boolean deleteTwbRoleById(String id);

	/**
	 * @Title  saveRoleResource
	 * @Description 保存角色经办权限
	 * @param roleId
	 * @param resIds
	 * @return
	 * @author DSY
	 * @date 2018年11月22日 下午4:58:43
	 */
	int saveRoleResource(String roleId, String resIds, String projectId);

	/**
	 * @Title  saveRoleAccreditResource
	 * @Description 保存角色授权权限
	 * @param roleId
	 * @param resIds
	 * @return
	 * @author DSY
	 * @date 2018年11月22日 下午5:27:56
	 */
	int saveRoleAccreditResource(String roleId, String resIds, String projectId);

	/**
	 * @Title  listRoleIdsByUserId
	 * @Class: ITwbRoleService.java
	 * @Description 获取用户角色ID
	 * @param userId
	 * @return
	 * @author DSY
	 * @date 2018年11月25日 下午9:19:57
	 */
	List<String> listRoleIdsByUserId(String userId);

	/**
	 * @Title saveRoleUsers
	 * @Description 保存角色的用户
	 * @param roleId
	 * @param userIds
	 * @return
	 * @author DSY
	 * @date 2020年7月15日 下午3:45:57
	 */
	int saveRoleUsers(String roleId, String userIds);

	/**
	 * @Title deleteRoleUser
	 * @Description 删除角色配置的用户
	 * @param roleId
	 * @param userIds
	 * @return
	 * @author DSY
	 * @date 2020年7月15日 下午5:05:57
	 */
	int deleteRoleUser(String roleId, String userIds);
	
	/**
	 * @Title saveRoleDataScope
	 * @Description 保存角色自定义数据权限信息
	 * @param roleId
	 * @param orgIds
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年7月25日 下午8:22:05
	 */
	int saveRoleDataScope(String roleId,List<String> orgIds);

	/**
	 * @Title deleteRoleDataScope
	 * @Description 删除角色数据权限
	 * @param id
	 * @AuthorOriginally DSY
	 * @date 2022年8月4日 下午6:18:26
	 */
	int deleteRoleDataScope(String id);

	/**
	 * @Title listRoleDataScopes
	 * @Description 查询角色自定义数据权限
	 * @param id
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年8月4日 下午6:25:49
	 */
	List<String> listRoleDataScopes(String id);
}
